/*
 * @lc app=leetcode.cn id=283 lang=cpp
 *
 * [283] 移动零
 */
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>

using namespace std;
// @lc code=start
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int cur = 0;
        for(int i = 0;i < nums.size();i++) {
            if(nums[i] != 0) {
                nums[cur] = nums[i];
                cur++;
            }
        }
        for(;cur < nums.size();cur++) {
            nums[cur] = 0;
        }

        //!双指针
        // 左指针左边均为非零数；
        // 右指针左边直到左指针处均为零。
        // int n = nums.size(), left = 0, right = 0;
        // while (right < n) {
        //     if (nums[right]) {
        //         swap(nums[left], nums[right]);
        //         left++;
        //     }
        //     right++;
        // }
    }
};
// @lc code=end

